package org.hd.lineloss.template.controller;


import cn.dev33.satoken.util.SaResult;
import org.hd.entities.LineLossTemp;
import org.hd.lineloss.template.service.LineLossTempService;
import org.springframework.web.bind.annotation.*;

import javax.annotation.Resource;
import java.util.List;
import java.util.Map;

/***
 * 网损月报模板控制的控制类
 */
@RestController
@RequestMapping("/system/lineLoss/")
public class LineLossTemplateController {

    @Resource
    LineLossTempService lineLossTempService;

    /***
     * 获取模板的配置，默认获取状态为1的配置
     * @return
     */
    @GetMapping("getTemp")
    public SaResult getTemplate(
            @RequestParam(required =false) Integer id){
        //如果前端传来空数据，就获取正在使用的模板
        if(null == id){
            LineLossTemp lineLossTemp = lineLossTempService.queryTempDefault();
            if(null != lineLossTemp){
                return new SaResult(200,"获取配置成功",lineLossTemp);
            }else{
                return SaResult.error("后台无配置，请先上传模板");
            }
        }
        //如果前端传来了数据，就获取指定的数据
        LineLossTemp lineLossTemp = lineLossTempService.queryTemp(id);

        //如果传来了数据，包括当前正在看的模板id
        if(null != lineLossTemp){
            return new SaResult(200,"获取配置成功",lineLossTemp);
        }
        return SaResult.error("后台无配置，请先上传模板");
    }

    /**
     *
     * @param map
     * @return
     */
    @PostMapping("useTemp")
    public SaResult useTemplate(
            @RequestBody Map<String,String> map
    ){

        if(lineLossTempService.updateState(Integer.valueOf(map.get("id")).intValue())) {
            return new SaResult(200,"设置成功","");
        }
        return SaResult.error("设置失败");
    }

    /**
     * 删除模板
     * @param map
     * @return
     */
    @PostMapping("deleteTemp")
    public SaResult deleteTemp(@RequestBody Map<String,String> map){

        if(lineLossTempService.deleteTemp(Integer.valueOf(map.get("id")).intValue())){
            return new SaResult(200,"删除成功","");
        }

        return SaResult.error("删除失败");
    }


    /***
     *获取所有的模板
     * @return
     */
    @GetMapping("getTempList")
    public SaResult getTempList(){
        List<LineLossTemp> lineLossTemps = lineLossTempService.queryAllTemp();

        if(null != lineLossTemps){
            return new SaResult(200,"获取所有模板成功",lineLossTemps);
        }
        return new SaResult(500,"获取所有模板失败","");
    }



    /**
     * 插入模板
     * Map
     * @return  状态码及模板配置以及最新的id
     */
    @PostMapping("insertTemp")
    public SaResult insertTemp(
            @RequestBody Map<String,String> map
    ){

        boolean flag = lineLossTempService.insertTemp(map.get("insertDate"),
                                                    map.get("commitMsg"),
                                                    map.get("luckySheetConfigStr"),
                                                    map.get("isZero"));
        if(flag){
            return new SaResult(200,"成功",lineLossTempService.queryNewTemp());
        }
        return SaResult.error("插入配置失败");
    }

    /***
     * 更新数据
     * @param map
     * @return
     */
    @PostMapping("updateTemp")
    public SaResult updateTemp(
            @RequestBody Map map
    ){

        int viewId = (int) map.get("viewId");
        boolean flag = lineLossTempService.updateTemp(viewId,
                map.get("commitMsg").toString(),
                map.get("luckySheetConfigStr").toString(),
                map.get("updateDate").toString()
        );
        if(flag){
            return SaResult.ok("更新成功");
        }
        return SaResult.error("更新失败");
    }

}
